import os
import re


class PrefixAndKeywordRemover:
    def __init__(self, directory, prefix_pattern=r'^\d+\.\s*', keyword="「」"):
        """
        初始化PrefixAndKeywordRemover类。

        参数:
        directory (str): 需要处理的文件夹路径。
        prefix_pattern (str): 正则表达式，用于匹配需要去除的文件名前缀。
        keyword (str): 需要从文件名中去除的关键字。
        """
        self.directory = directory
        self.prefix_pattern = prefix_pattern
        self.keyword = keyword

    def remove_prefix_and_keyword_from_filenames(self):
        """
        遍历指定文件夹中的所有文件，并去除文件名中的前缀和关键字。
        """
        try:
            # 获取文件夹中的文件列表
            files = os.listdir(self.directory)

            for filename in files:
                # 使用正则表达式检查文件名是否符合需要去除前缀的模式
                if re.match(self.prefix_pattern, filename):
                    # 构建新的文件名，去除前缀
                    new_filename = re.sub(self.prefix_pattern, '', filename)
                else:
                    new_filename = filename

                # 去除文件名中的关键字
                if self.keyword in new_filename:
                    new_filename = new_filename.replace(self.keyword, '')

                # 构建完整的旧文件路径和新文件路径
                old_file_path = os.path.join(self.directory, filename)
                new_file_path = os.path.join(self.directory, new_filename)

                # 重命名文件
                if old_file_path != new_file_path:
                    os.rename(old_file_path, new_file_path)
                    print(f'Renamed "{filename}" to "{new_filename}"')

        except Exception as e:
            print(f"An error occurred: {e}")


if __name__ == "__main__":
    # 指定文件夹路径
    directory = r"E:\彭涛 Python爬虫训练营"

    # 实例化PrefixAndKeywordRemover类
    remover = PrefixAndKeywordRemover(directory)

    # 移除文件名中的前缀和关键字
    remover.remove_prefix_and_keyword_from_filenames()